/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package atm;

import java.util.Scanner;

/**
 *
 * @author etenorio
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
      Respuesta respuesta = new Respuesta();

      /**
       * Operaciones de pantalla interfaz texto
       */
      String cuenta = null;
      String clave = null;
      String control = null;
      int primero = 0;
      int opcion = 0;
      double monto=0.0;
      Cajero cajero = new Cajero(1);
      Scanner sc = new Scanner(System.in);
      do{
        //try{
          System.out.println("Bienvenidos a tu cajero");
          System.out.println("Ingrese su cuenta: ");
          cuenta = sc.nextLine();
          System.out.println("Ingrese su clave: ");
          clave = sc.nextLine();
          System.out.println("Seleccione la Operación: ");
          System.out.println("1 .. Consulta");
          System.out.println("2 .. Retiro");
          System.out.println("3 .. Deposito");
          System.out.println("4 .. Cambio de clave");
          System.out.println("3 .. Cancelar");
          System.out.println("0 .. Salir del cajero");
          opcion = sc.nextInt();
          sc.nextLine();
          
          cajero.setOperacion(opcion);
          cajero.getOperacion().setCuenta(cuenta);
          cajero.getOperacion().setClave(clave);
        switch(opcion){
          case 1://Consulta
            break;
          case 2://Retiro
          case 3://Deposito
            while(true){
                System.out.println("Ingrese monto: ");
                monto = sc.nextDouble();
                if(monto>=0){
                    break;
                }else{
                    System.out.println("No se pueden ingresar montos negativos");
                }
            }
            ((Retiro)(cajero.getOperacion())).setMonto(monto);
            sc.nextLine();
            if (primero == 0){
              System.out.println("Indique los primeros digitos de la cedula");
              primero = 1;
            }else{
              System.out.println("Indique los ultimos digitos de la cedula");
              primero = 0;
              cajero.getOperacion().setPrimeros(false);
            }
            control = sc.nextLine();
            cajero.getOperacion().setControl(control);
            break;
          case 4:
            System.out.println("Ingrese su clave nueva:");
            ((CambioClave)(cajero.getOperacion())).setNuevaClave(sc.nextLine());
            if (primero == 0){
              System.out.println("Indique los primeros digitos de la cedula");
              primero = 1;
            }else{
              System.out.println("Indique los ultimos digitos de la cedula");
              primero = 0;
              cajero.getOperacion().setPrimeros(false);
            }
            control = sc.nextLine();
            cajero.getOperacion().setControl(control);            
            break;
          default:
            respuesta.setMensaje("Opcion incorrecta");
            break;
        }
        respuesta = cajero.realizarOperacion();
        System.out.println(respuesta.getMensaje());
        if (respuesta.isAceptada() && opcion!=4){
          System.out.println("Saldo: "+respuesta.getSaldo());
        }
//        }catch (Exception e){
//          System.out.println("Operacion cancelada, hasta luego");
//          sc.nextLine();
//          opcion = 3;
//        }
      }while (opcion != 0);
        // TODO code application logic here
    }

}
